#include <header.h>

/*
通过sigprocmask阻塞2号信号，睡眠5秒后，解除阻塞，2号信号得到执行；
在睡眠后，解除阻塞之前，通过sigpending检测是否有信号挂起。
*/
void handler(int num){
    printf("I am handler\n");
}
/**
 * 打印位图
*/
void print_set(sigset_t *set){
    int i;
    for (i = 1; i<32; i++) {
        if (sigismember(set, i))
            putchar('1');
        else
            putchar('0');
    }
    printf("\n");
}
int main(int argc, char* argv[]){
	ARGS_CHECK(argc, 1);
    
    sigset_t set, pre_set;
    sigemptyset(&set);

    sigaddset(&set, 2);
    sigprocmask(SIG_BLOCK, &set, NULL);

    sleep(5);

    int ret = sigpending(&pre_set);
    ERROR_CHECK(ret, -1, "sigpending\n");

    print_set(&pre_set);
    
    // 解除阻塞
    sigprocmask(SIG_UNBLOCK, &set, NULL);
    
    // if(sigismember(&old2, 2)){
    //     printf("old的屏蔽中, 屏蔽了2号信号 \n");
    // }
	return 0;
}